package util;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * bringt statische Ausgabe-Methoden (trace .. error)<br>
 * Standard-Level ist auf INFO+ gestellt
 * @author bomik
 */
public class LOG {
     
    public static boolean TRACE;
    public static boolean DEBUG;
    public static boolean INFO=true;
    public static boolean WARN=true;
    public static boolean ERROR=true;
    static SimpleDateFormat sdf = new SimpleDateFormat("dd.MM. HH:mm.ss");

    /**
     * die Methode, die alle anderen nutzen um die endgueltige ausgabe zu machen
     * hier wird eingestellt, ob konsolen ausgabe oder sonstwo
     * kann zB das IOutil nutzen...
     * @param s 
     */
    public static void writeln(String s){
        System.out.println(s);
    }
    public static void write(String s){
        System.out.print(s);
    }
    
    
    //<editor-fold defaultstate="collapsed" desc="die anderen methoden..">
    public static void trace(Object o){
        if(TRACE&&o!=null){
            writeln(timestamp()+"[TRACE ] "+o.toString());
        }
    }
    public static void debug(Object o){
        if(DEBUG&&o!=null){
            writeln(timestamp()+"[DEBUG ] "+o.toString());
        }
    }
    public static void info(Object o){
        if(INFO&&o!=null){
            writeln(timestamp()+"[INFO  ] "+o.toString());
        }
    }
    public static void warn(Object o){
        if(WARN&&o!=null){
            writeln(timestamp()+"[WARN  ] "+o.toString());
        }
    }
    public static void error(Object o){
        if(ERROR&&o!=null){
            writeln(timestamp()+"[ERROR ] "+o.toString());
        }
    }
    //</editor-fold>
    
    static String timestamp(){
        return "["+sdf.format(new Date())+"]";
    }

}
